﻿using System;
using System.Collections.Generic;
using System.Text;

namespace Modelo
{
    [Serializable]
    public class ToleTole : Bomba
    {
        public ToleTole(Posicion posicion, Mapa mapa)
            : base(5, 6, mapa)
        {
            this.posicion = posicion;
        }

        public override void explotar()
        {
            if (posicion == null)
                return;

            List<Posicion> posicionesAfectadas = VerPosicionesAfectadas();

            AfectarBloques(posicionesAfectadas, 0);

            AfectarEnemigos(posicionesAfectadas, 0);

            AfectarBombita(posicionesAfectadas);
        }

        public override void AfectarBloques(List<Posicion> posicionesAfectadas ,int potenciaDeDestruccion)
        {
            List<Celda> celdasAfectadas = mapa.verCeldasAfectadas(posicionesAfectadas);
            foreach (Celda celda in celdasAfectadas)
            {
                if (celda.ObtenerBloque() != null)
                {
                    Bloque bloque = celda.ObtenerBloque();
                    bloque.hacerDano(bloque.getResistencia());
                    if (bloque.getResistencia() == 0)
                        mapa.eliminarBloqueDestruido(bloque, celda);
                }
            }
        }

        public override void AfectarEnemigos(List<Posicion> posicionesAfectadas, int potenciaDeDestruccion)
        {
            List<Enemigo> enemigosAfectados = mapa.verEnemigosAfectados(posicionesAfectadas);
            foreach (Enemigo enemigo in enemigosAfectados)
            {
                enemigo.restarResistencia(enemigo.obtenerResistencia());
                if (enemigo.obtenerResistencia() == 0)
                    mapa.eliminarEnemigoDestruido(enemigo);
            }
        }
    }
}
